sample\
06 sample_settings.hsp
#include "mod_layerbutton.hsp"
gosub *create_button_hidari
gosub *create_button_migi
gosub *create_button_shita
log = ""
// 表示ループ
repeat
redraw 0 : color 255,255,255 : boxf : color 220,220,220 : pos 0,0 : font msgothic,15
mes log
color
pos 40, 25 : mes "マウスによる操作無効\n(フォーカス→キーボード操作可能)"
pos 325, 25 : mes "キーボードによる移動決定に\nWASD,エンターキーを使えなくする"
pos 180,330 : mes "ボタンを押しても非表示にしない"
font msgothic,15,1
pos 180, 0 : mes "laybtn_settings の設定例"
font msgothic,12
color 128,, :pos 60,415 : mes "他のボタンにフォーカスが移ったとき、\n移動前のボタンを強制的に通常状態に戻す。"
color ,,128 : pos 340,415 : mes "FOCUS_INの表示が完了する前に\nフォーカスが外れたときFOCUS_OUTを即座に開始。 "
redraw 1
await 1000/60
loop
stop
// ボタン作成 : 左
*create_button_hidari
if laybtn_length(0) > 0 : return ; グループID 0 がすでに存在する場合はreturn
pos 60,60
repeat 4
pos ,ginfo_cy+5
// ボタン作成 : グループID 0
layerbutton 180,50, cnt, 0, 30,10,5, 15,5,2 {
laybtn_settings 0,1,0 ; 設定 : マウス操作無効
if lparam == objlayer_cmddraw {
color 255,255,255 : font msgothic, 18, 1 ; laybtn_ezboxのテキスト設定
laybtn_ezbox $BBFF9999, $BBFF0000, $BBAA0000, "ボックス0"+(objlayer_option+1)
// ボタンのクリック判定
if layerbtn_stat == LAYBTN_COMPLETE_SELECTED {
log += "hidari - COMPLETE! opt="+objlayer_option+" wp="+wparam +"\n"
}
}
return
}
if cnt == 0 : hidari_fobj = stat ; 最初のボタンのオブジェクトIDを保存
loop
return
// ボタン作成 : 右
*create_button_migi
if laybtn_length(1) >= 3 : return ; グループID 1 がすでに存在する場合はreturn
repeat 4
switch cnt
case 0 : pos 320, 70 : swbreak
case 1 : pos 450, 70 : swbreak
case 2 : pos 320, 180 : swbreak
case 3 : pos 450, 180 : swbreak
swend
// ボタン - グループID 1
layerbutton 120,100, cnt, 1, 30,10,5, 15,5,2 {
laybtn_settings 4+32,0,0 ; 設定 : WASD移動/エンター決定 制限
if lparam == objlayer_cmddraw {
color 255,255,255 : objcolor 0,0,0 : font msgothic, 18, 1 ; laybtn_ezboxのテキスト設定
laybtn_ezbox $BB9999FF, $BB0000FF, $BB0000AA, "ボックス0"+(objlayer_option+1)
// ボタンのクリック判定
if layerbtn_stat == LAYBTN_COMPLETE_SELECTED {
log += "migi - COMPLETE! opt="+objlayer_option+" wp="+wparam +"\n"
}
}
return
}
if cnt == 0 : migi_fobj = stat ; 最初のボタンのオブジェクトIDを保存
loop
return
// ボタン作成 : 下
*create_button_shita
repeat 3
pos 60+80*cnt, 360
// ボタン - グループID 2
layerbutton 70,40, cnt, 2, 0,20,5, 0,20,2 {
laybtn_settings 0,0,1+8 ; 設定 : ボタンを押しても消さない + フォーカスアニメーションについて
if lparam == objlayer_cmddraw {
color 255,, : boxf objlayer_axis_x-1, objlayer_axis_y-1, objlayer_axis_x2, objlayer_axis_y2 ; 1px大きくボタン下地描画
color 255,255,255 : objcolor 100,100,100 : font msgothic, 12 ; laybtn_ezboxのテキスト設定
switch objlayer_option
case 0 : btxt = "Show/Hide" : swbreak
case 1 : btxt = "Focus" : swbreak
case 2 : laybtn_enable 0,-1 : btxt = "Enable "+stat : swbreak
swend
laybtn_ezbox $999999, $BBBBBB, $666666, btxt,4 ,,,,,0 ; 角丸なし長方形
// ボタンのクリック判定
if layerbtn_stat == LAYBTN_PRESS_IN_SELECTED {
log += "shita_L - SELECTED! opt="+objlayer_option+" wp="+wparam +"\n"
switch objlayer_option
case 0 : if laybtn_length(0) != 0 : laybtn_hide 0 : else : gosub *create_button_hidari : swbreak
case 1 : objsel hidari_fobj : swbreak
case 2 : laybtn_enable 0,-1 : laybtn_enable 0,1-stat : swbreak
swend
}
}
return
}
loop
repeat 3
pos 340+80*cnt, 360
// ボタン - グループID 2
layerbutton 70,40, cnt, 2, 0,20,5, 0,20,2 {
laybtn_settings 0,0,1+16 ; 設定 : ボタンを押しても消さない + フォーカスアニメーションについて
if lparam == objlayer_cmddraw {
// ボタンの描画
color ,,255 : boxf objlayer_axis_x-1, objlayer_axis_y-1, objlayer_axis_x2, objlayer_axis_y2 ; 1px大きくボタン下地描画
color 255,255,255 : objcolor 100,100,100 : font msgothic, 12 ; laybtn_ezboxのテキスト設定
switch objlayer_option
case 0 : btxt = "Show/Hide" : swbreak
case 1 : btxt = "Focus" : swbreak
case 2 : laybtn_enable 1,-1 : btxt = "Enable "+stat : swbreak
swend
laybtn_ezbox $999999, $BBBBBB, $666666, btxt,4 ,,,,,0 ; 角丸なし長方形
// ボタンのクリック判定
if layerbtn_stat == LAYBTN_PRESS_IN_SELECTED {
log += "shita_R - SELECTED! opt="+objlayer_option+" wp="+wparam +"\n"
switch objlayer_option
case 0 : if laybtn_length(1) != 0 : laybtn_hide 1 : else : gosub *create_button_migi : swbreak
case 1 : objsel migi_fobj : swbreak
case 2 : laybtn_enable 1,-1 : laybtn_enable 1,1-stat : swbreak
swend
}
}
return
}
loop
return